// 导入axios
import axios from "axios";
import { getToken } from "./token";
import handleUnauthorized from "@/hooks/handleUnauthorized";
import { message } from "antd";

// 创建axios实例
const service = axios.create({
	baseURL: import.meta.env.VITE_APP_BASE_API, // api的base_url
	timeout: 5000, // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
	(config) => {
		// 可以在这里添加请求头等信息
		// 从外部获取动态的 token 并设置到请求头
		const token = getToken();
		if (token) {
			config.headers.Authorization = `Bearer ${token}`;
		}
		return config;
	},
	(error) => {
		// 请求错误处理
		console.log(error); // for debug
		Promise.reject(error);
	}
);

// 响应拦截器
service.interceptors.response.use(
	(response) => {
		// 可以在这里对响应数据进行处理
		return response.data;
	},
	(error) => {
		if (error.response.data.message === "Unauthorized") {
			message.info("登录过期");
			// const navigate = useNavigate();
			// navigate("/login");
		}
		return Promise.reject(error);
	}
);

// 封装get方法
export const get = (url: string, params?: any) =>
	service.get(url, { params: params });

// 封装post方法
export const post = (url: string, data: any) => service.post(url, data);

// 封装put方法
export const put = (url: string, data: any) => service.put(url, data);

// 封装delete方法
export const del = (url: string, params: any) =>
	service.delete(url, { params: params });
